package string

import (
	global2 "longmen/server/config/global"
	"math"
	"math/rand"
	"time"
)

const QUREY_MAX_SIZE = 500

func RandInt(min, max int) int {
	rand.Seed(time.Now().UnixNano())
	return rand.Intn(max-min) + min
}

func GenSmsCode() string {
	codeLen := global2.Config.GetInt("sys.smscode_len")
	if codeLen < 4 {
		codeLen = 4
	}
	data := make([]byte, codeLen)
	rand.Read(data)
	chars := []byte("123456789")
	for i := 0; i < len(data); i++ {
		data[i] = chars[RandInt(0, 8)]
		// if i == 0 {
		// 	data[i] = chars[1:][data[i]%9]
		// } else {
		// 	data[i] = chars[data[i]%10]
		// }
	}
	return string(data)
}

func GetDefaultNum(n1, n2 int) int {
	if n1 <= 0 || n1 > QUREY_MAX_SIZE {
		return n2
	}
	return n1
}

func IntIsInSlice(ids []int, id int) bool {
	for idx := range ids {
		if id == ids[idx] {
			return true
		}
	}
	return false
}
func UintIsInSlice(ids []uint, id uint) bool {
	for idx := range ids {
		if id == ids[idx] {
			return true
		}
	}
	return false
}

/*
@Create Jun-30-2022 Enzo
@Param: val :要四舍五入的数， precision：保留几位小数
Round 四舍五入，ROUND_HALF_UP 模式实现
返回将 val 根据指定精度 precision（十进制小数点后数字的数目）进行四舍五入的结果。precision 也可以是负数或零。
*/
func Round(val float64, precision int) float64 {
	p := math.Pow10(precision)
	return math.Floor(val*p+0.5) / p
}
